
package jp.co.realsys.service.impl;

import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import jp.co.realsys.dao.StudentDao;
import jp.co.realsys.error.TaskException;
import jp.co.realsys.model.StudentModel;
import jp.co.realsys.service.StudentService;

/**
 * 学生情報メモリーの業務層の実装クラス
 * 
 * @author
 */
@Service
@Transactional
public class StudentDBServiceImpl implements StudentService {

    /** 学生情報のDAO */
	@Autowired
    private StudentDao studentDao;
    
    /**
     * 学生情報を登録する
     * 
     * @param student 学生情報モデル
     * @return レコード数
     */
    public int doAddStduent(StudentModel student) throws TaskException {
    	/*
    	if (studentDao.getStudentById(student.getId()) != null) {
    		throw new TaskException("該当学生の情報が存在しました、再登録ことができません。");
    	}
    	*/
    	return studentDao.doAddStduent(student);
    }

    /**
     * 学生情報を更新する
     * 
     * @param student 学生情報モデル
     * @return レコード数
     */
    public int doUpdateStudent(StudentModel student) throws TaskException {
    	if (studentDao.getStudentById(student.getId()) == null) {
    		throw new TaskException("該当学生が存在しません。");
    	}
        return studentDao.doUpdateStduent(student);
        
    }

    /**
     * 学生情報を削除する
     * 
     * @param studentId 学生ID
     * @return レコード数
     */
    public int doDeleteStduent(String studentId) throws TaskException {
    	if (studentDao.getStudentById(studentId) == null) {
    		throw new TaskException("該当学生が存在しません。");
    	}
    	return studentDao.doDeleteStduent(studentId);
        
    }

    /**
     * 学生情報を検索する
     * 
     * @param name 名前
     * @return 学生情報
     */
    public List<StudentModel> doSelectStduentList(String studentName) throws TaskException {
        List<StudentModel> studentList = studentDao.doSelectStduentList(studentName);
        return studentList;
    }
    /**
     * 学生リストを得る
     * @return 　studentList
     * @throws TaskException 
     */
    public List<StudentModel> getAllStudents() throws TaskException{
    	return studentDao.getAllStudents();
    }

	@Override
	public StudentModel getStudentById(String id) throws TaskException {
		return studentDao.getStudentById(id);
	}

	
}
